package cloud.xiguapi.ubas.analysis.uv.model;

/**
 * @author 大大大西西瓜皮🍉
 * date: 2021-5-19 上午 09:56
 * desc:
 */
public class UvCountResultBloomFilter {

    /**
     * 定义位图的大小, 一般需要定义为2或8的整数次幂. 这里的数据都存放在redis中, 并不在内存
     */
    private Integer cap;

    public UvCountResultBloomFilter(Integer cap) {
        this.cap = cap;
    }

    /**
     * 实现一个hash函数
     *
     * @return hash code
     */
    public Long hashCode(String value, Integer seed) {
        long result = 0L;
        for (int i = 0; i < value.length(); i++) {
            result = result * seed + value.charAt(i);
        }
        return result & (cap - 1);
    }
}
